package cn.com.huzo.model.entities.purchase;

import huzofw.model.entities.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import huzofw.model.entities.IAggregateRoot;
import java.io.Serializable;
import java.sql.Timestamp;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * 采购跟单日记明细记录实体类
 * <p>
 * @author 范学春
 */
public class PoTrackingDiaryLinesEntity extends BaseEntity implements Serializable, IAggregateRoot {

    private static final long serialVersionUID = 2469671888145679151L;
    private String LinesId;
    private Long HeaderId;
    private String NoOfStyle;
    private String ProductName;
    private String ProductCategoryName;
    // 材料
    private Long MaterialId;
    private String PurchaseName;
    private String MaterialCode;
    private Float Quantity;
    private Float QuantityOfArrived;
    private Integer IsOver;
    private String CompanyName;
    private String NoOfContract;
    private String MaterialTypeName;
    private Float FabricWidth;
    private String Specification;
    private String GramWeight;
    private String SilkWeave;
    private Long UomId;
    private String UomName;
    private String ColourCode;
    private String ColourName;
    private Timestamp DateOfPlan;
    private Timestamp DateOfDelivery;
    private String BulkSample;
    private String ReferenceSample;
    // 详细到货
    private Timestamp DateOfArrivedOfPer;
    private Float QuantityOfArrivedOfPer;
    private Float Description;

    public String getLinesId() {
        return LinesId;
    }

    public void setLinesId(String LinesId) {
        this.LinesId = LinesId;
    }

    public String getNoOfStyle() {
        return NoOfStyle;
    }

    public void setNoOfStyle(String NoOfStyle) {
        this.NoOfStyle = NoOfStyle;
    }

    public String getProductName() {
        return ProductName;
    }

    public void setProductName(String ProductName) {
        this.ProductName = ProductName;
    }

    public String getProductCategoryName() {
        return ProductCategoryName;
    }

    public void setProductCategoryName(String ProductCategoryName) {
        this.ProductCategoryName = ProductCategoryName;
    }

    public Long getMaterialId() {
        return MaterialId;
    }

    public void setMaterialId(Long MaterialId) {
        this.MaterialId = MaterialId;
    }

    public String getPurchaseName() {
        return PurchaseName;
    }

    public void setPurchaseName(String PurchaseName) {
        this.PurchaseName = PurchaseName;
    }

    public String getMaterialCode() {
        return MaterialCode;
    }

    public void setMaterialCode(String MaterialCode) {
        this.MaterialCode = MaterialCode;
    }

    public Float getQuantity() {
        return Quantity;
    }

    public void setQuantity(Float Quantity) {
        this.Quantity = Quantity;
    }

    public Float getQuantityOfArrived() {
        return QuantityOfArrived;
    }

    public void setQuantityOfArrived(Float QuantityOfArrived) {
        this.QuantityOfArrived = QuantityOfArrived;
    }

    public Integer getIsOver() {
        return IsOver;
    }

    public void setIsOver(Integer IsOver) {
        this.IsOver = IsOver;
    }

    public String getCompanyName() {
        return CompanyName;
    }

    public void setSupplierName(String CompanyName) {
        this.CompanyName = CompanyName;
    }

    public String getNoOfContract() {
        return NoOfContract;
    }

    public void setNoOfContract(String NoOfContract) {
        this.NoOfContract = NoOfContract;
    }

    public String getMaterialTypeName() {
        return MaterialTypeName;
    }

    public void setMaterialTypeName(String MaterialTypeName) {
        this.MaterialTypeName = MaterialTypeName;
    }

    public Float getFabricWidth() {
        return FabricWidth;
    }

    public void setFabricWidth(Float FabricWidth) {
        this.FabricWidth = FabricWidth;
    }

    public String getSpecification() {
        return Specification;
    }

    public void setSpecification(String Specification) {
        this.Specification = Specification;
    }

    public String getGramWeight() {
        return GramWeight;
    }

    public void setGramWeight(String GramWeight) {
        this.GramWeight = GramWeight;
    }

    public String getSilkWeave() {
        return SilkWeave;
    }

    public void setSilkWeave(String SilkWeave) {
        this.SilkWeave = SilkWeave;
    }

    public Long getUomId() {
        return UomId;
    }

    public void setUomId(Long UomId) {
        this.UomId = UomId;
    }

    public String getUomName() {
        return UomName;
    }

    public void setUomName(String UomName) {
        this.UomName = UomName;
    }

    public String getColourName() {
        return ColourName;
    }

    public void setColourName(String ColourName) {
        this.ColourName = ColourName;
    }

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    public Timestamp getDateOfPlan() {
        return DateOfPlan;
    }

    public void setDateOfPlan(Timestamp DateOfPlan) {
        this.DateOfPlan = DateOfPlan;
    }

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    public Timestamp getDateOfDelivery() {
        return DateOfDelivery;
    }

    public void setDateOfDelivery(Timestamp DateOfDelivery) {
        this.DateOfDelivery = DateOfDelivery;
    }

    public String getBulkSample() {
        return BulkSample;
    }

    public void setBulkSample(String BulkSample) {
        this.BulkSample = BulkSample;
    }

    public String getReferenceSample() {
        return ReferenceSample;
    }

    public void setReferenceSample(String ReferenceSample) {
        this.ReferenceSample = ReferenceSample;
    }

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    public Timestamp getDateOfArrivedOfPer() {
        return DateOfArrivedOfPer;
    }

    public void setDateOfArrivedOfPer(Timestamp DateOfArrivedOfPer) {
        this.DateOfArrivedOfPer = DateOfArrivedOfPer;
    }

    public Float getQuantityOfArrivedOfPer() {
        return QuantityOfArrivedOfPer;
    }

    public void setQuantityOfArrivedOfPer(Float QuantityOfArrivedOfPer) {
        this.QuantityOfArrivedOfPer = QuantityOfArrivedOfPer;
    }

    public Float getDescription() {
        return Description;
    }

    public void setDescription(Float Description) {
        this.Description = Description;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (!(o instanceof PoTrackingDiaryLinesEntity)) {
            return false;
        }

        final PoTrackingDiaryLinesEntity that = (PoTrackingDiaryLinesEntity) o;

        return new EqualsBuilder()
                .append(this.getLinesId(), that.getLinesId())
                .isEquals();
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public int hashCode() {
        int result = 17;
        result = 31 * result + this.getLinesId().hashCode();

        return result;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this);
    }
}
